package lei.j_java泛型_匿名内部类_反射.泛型.通配符;

/**
 * @className: 上界通配符
 * @author: xl
 * @date: 2025/3/1 16:20
 * @Version: 1.0
 * @description:
 */

import java.util.List;

public class 上界通配符 {
    // 使用上界通配符，T 必须是 Number 或其子类

    /**
     * 参数限制： 通过 List<? extends Number> 使用上界通配符，表示接受的列表元素必须是 Number 或其子类（如 Integer、Double 等）。
     * 核心操作： 遍历列表中的每个元素，调用 number.doubleValue() 将其统一转换为 double 类型，并进行累加求和。
     * 兼容性： 可安全处理多种数值类型的列表（如 List<Integer>、List<Double>），无需为每种类型单独实现方法。
     * @param list
     * @return
     */
    public static double sumOfList(List<? extends Number> list) {
        double sum = 0.0;
        for (Number number : list) {
            sum += number.doubleValue();
        }
        return sum;
    }

    public static void main(String[] args) {
        List<Integer> intList = List.of(1, 2, 3);
        List<Double> doubleList = List.of(1.5, 2.5, 3.5,3.33333);

        System.out.println("Sum of intList: " + sumOfList(intList)); // 输出: Sum of intList: 6.0
        System.out.println("Sum of doubleList: " + sumOfList(doubleList)); // 输出: Sum of doubleList: 7.5
    }
}
